home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
pc
/
LOGIC Apple II 5.25" Library - DOS Part 3
/
DOS077A.dsk
/
TYPEWRITER+SOUND ROUTINE.int
< prev
Wrap
Text File
|
2012-02-16
|
4KB
|
64 lines
1 GOSUB 30:DELAY=25:SOUND=1
2 GOSUB 700
10 END
30 REM * AUTOMATIC LOMEM: *
40 REM AUTO-LOMEM: MUST BE BEFORE ANY VARIABLES ARE USED
50 POKE 74,3072 MOD 256: POKE 75,3072/256: POKE 204, PEEK (74): POKE 205, PEEK (75)
60 REM 74,75 = LOMEM POINTERS, 204,205 = END OF VARIABLE TABLE. LINE IS SAME AS MANUAL LOMEM:
70 RETURN
300 REM * WHITE-PRINT ROUTINE *
310 REM * PAGE 2 MEMORY MOVE *
320 REM MOVE PAGE 1 TEXT (AND USER) TO PAGE 2
.
330 SOURCESTART=1024:SOURCEFINISH=2047:DESTINACION=2048:REM PAGE 1 TO PAGE 2 MOVE ADDRESSES
340 POKE 66,DESTINACION MOD 256: POKE 67,DESTINACION/256
350 POKE 60,SOURCESTART MOD 256: POKE 61,SOURCESTART/256
360 POKE 62,SOURCEFINISH MOD 256: POKE 63,SOURCEFINISH/256
370 CALL -468
380 REM CALLS (WITH THE EXCEPTION OF "CALL -936") SHOULD ALWAYS BE THE LAST STATEMENT ON A LINE IN INTEGER OR APPLESOFT.
390 POKE -16299,0:RETURN :REM TURN-ON PAGE 2 TEXT AND RETURN
400 REM THIS ROUTINE IS EQUIVALENT TO TYPING IN THE MONITOR:
*800<400.7FFM .
410 REM AND MAY BE USED FOR MOVING ANY BLOCK OF MEMORY TO ANY POSITION IN MEMORY .
420 REM *** END OF MEMORY MOVE ***
.
500 REM * TYPEWRITER PRINT-OUT *
510 REM *** MISC. SUBROUTINES *** .
520 VTAB 24: POKE 50,63:PRINT " ";: POKE 50,255:RETURN :REM PRINT A SINGLE LINE OF WHITE AT BOTTOM
530 REM *** INITIALIZE SCREEN ***
540 IF SS=0 THEN DIM S$(255),WRD$(255):SS=1:REM DIMENSION S(ENTENCE)$ AND W(O)RD$ IF NOT YET DONE (REASON FOR SS SWITCH)
550 CALL -936:FOR LINE=17 TO 24:GOSUB 310:GOSUB 520: POKE -16300,0:FOR TIME=1 TO 100:REM POKE-16300 RETURNS USER TO PAGE 1
560 NEXT TIME:NEXT LINE:VTAB 20:TAB 4: POKE -16300,0:RETURN :REM INIT AND SIMULATE PAPER ROLLING INTO TYPEWRITER
570 PRINT :GOSUB 310:GOSUB 520:VTAB 20:TAB 4: POKE -16300,0:RETURN :REM SCROLL 1 LINE OF TEXT AND DRAW NEW BOTTOM LINE
580 S= PEEK (-16336)+ PEEK (-16336)+ PEEK (-16336)+ PEEK (-16336):RETURN :REM *TYPEWR. SOUND*
600 REM *TYPEWR. MAIN LOOP*
.
610 FOR CURRENTPOS=1 TO LEN(S$):REM CURRENTPOS WILL MARK BEGINNING OF EACH SUCCESSIVE WORD IN S(ENTENCE)$
620 FOR J=CURRENTPOS TO LEN(S$):IF S$(J,J)#" " THEN NEXT J:REM SET J = TO END OF NEXT WORD
630 WRD$(1)=S$(CURRENTPOS,J-1):CURRENTPOS=J:REM PICK NEXT WORD FROM S(ENTENCE)$
640 IF LEN(WRD$)=0 THEN 670:REM IF 2 SPACES IN ROW, LEN =0 SO SKIP
650 IF PEEK (36)+ LEN(WRD$)>37 THEN GOSUB 570:REM IF TAB + WORD MEANS WORD WON'T FIT THEN SCROLL
660 FOR K=1 TO LEN(WRD$): POKE 50,63:PRINT WRD$(K,K);: POKE 50,255:IF SOUND THEN GOSUB 580:FOR TIME=0 TO DELAY/4+ RND (DELAY+1):NEXT TIME:NEXT K
670 POKE 50,63:PRINT " ";: POKE 50,255:REM "POKE 50,63" IS NOT LEFT ON SO USER DOEN'T CNRTL C AND END UP IN REVERS TEXT
680 REM ABOVE WILL PRINT-OUT WORD, LETTER BY LETTER WITH TYPEWRITER TIMING (SET BY VALUE OF "DELAY") AND SOUND (SET BY "SOUND=1)
690 NEXT CURRENTPOS:RETURN :REM .
700 GOSUB 530:S$=" INSTRUCTIONS":GOSUB 600:GOSUB 570:GOSUB 570
705 S$=" SEE LINE 1 FOR INITIALIZING REQUIRED VARIABLES. THE GOSUB 30 IS A ROUTINE TO SET":GOSUB 600
710 S$="SET LOMEM AND I'M NOT SURE IF IT IS REALLY NEEDED.":GOSUB 600
712 S$=" DELAY= IS HESITATION ROUTINE FOR PUTTING LETTERS ON THE SCREEN (SEE LINE 660). SOUND=1 CALLS ":GOSUB 600
714 S$="THE TYPEWRITER SOUND. IF SOUND =0 THEN NO SOUND IS PRODUCED. ":GOSUB 600:GOSUB 570:GOSUB 570
715 S$=" THE SUBROUTINE AT LINE 530 SCROLLS UP THE PAPER FROM THE BOTTOM OF THE SCREEN ":GOSUB 600
717 S$="AND IS ONLY USED ONCE AT THE BEGINNING. S$ IS WHAT IS WORKED ON EACH TIME ":GOSUB 600
720 S$="AND THE SUBROUTINE BEGINNING AT LINE 600 IS WHAT PARSES THE CONTENTS OF S$. ":GOSUB 600
725 GOSUB 570:GOSUB 570:S$=" THE GOSUB 570 JUMPS TO THE NEXT LINE AND TWO GOSUB 570 ACT LIKE ":GOSUB 600
726 S$="A PARAGRAPH STEP. ":GOSUB 600:GOSUB 570:GOSUB 570
730 S$=" THE LINES ABOVE 700 CAN ALL BE DELETED WHEN YOU UNDERSTAND THIS MUCH ":GOSUB 600
732 S$="AND REPLACED WITH YOUR OWN WORK. ":GOSUB 600
734 GOSUB 570:GOSUB 570:S$=" LINE 2 CAN DIRECT YOU ANYWHERE YOU CHOOSE TO PLACE THE S$. ":GOSUB 600
750 GOSUB 570:GOSUB 570:S$=" BEFORE DELETING THE LINES ABOVE 700 LOOK AT THEM TO SEE ":GOSUB 600
755 S$="THAT ALL THEY ARE MADE UP OF IS A SERIES OF WORDS PLACED IN S$'S ONE AFTER ANOTHER. ":GOSUB 600
760 FOR D=1 TO 5:GOSUB 570:NEXT D:FOR D=1 TO 2000:NEXT D:TEXT :CALL -936
770 REM THIS ROUTINE WAS EXCERPTED FROM THE INF. NUMBER OF MONKEYS AND SET UP FOR YOUR USE BY WM.J.KERR SR
900 END